
#ifndef __COMMSERVICE_H_
#define __COMMSERVICE_H_
#include "gd32f30x.h"

/*******************************************************************************/

#define PLAN_LIST0_COL_START        0x0000  //测试表单起始列
#define PLAN_LIST0_COL_STOP         0x0003  //测试表单结束列
#define PLAN_LIST0_COL_NUM          ((PLAN_LIST0_COL_STOP-PLAN_LIST0_COL_START)+1)  //测试表单列数     


/****************************与LCD通信的命令地址 宏定义*****************************/

/*----------------------------运行控制命令宏定义-----------------------*/
#define SYS_RUN                     0X1022  //系统运行
//#define EHP_RUN                     0X1023  //电热垫运行控制使能
//#define HP_RUN                      0X1024  //升温毯运行控制使能
//#define FT_RUN						0x1027  //足温垫运行控制使能
#define LcdCmd_BLOOD_CH1_RUN              0X1029  //输血输液CH1运行控制使能
#define LcdCmd_BLOOD_CH2_RUN               0X102A  //输血输液CH2运行控制使能
#define LcdCmd_InfusePress1_RUN         0x102B//
#define LcdCmd_InfusePress2_RUN         0x102C
#define LcdCmd_ArmBlanket1_RUN         0x1027//
#define LcdCmd_ArmBlanket2_RUN         0x1028//
#define LcdCmd_UpperBlanket_RUN        0x1023//
#define LcdCmd_LowBlanket_RUN          0x1024//
#define LcdCmd_FT1_RUN                 0x1025//
#define LcdCmd_FT2_RUN                 0x1026//

//#define EHP_ISRUN_STA							0x2020  //加热垫是否运行状态 写给LCD
//#define FT_ISRUN_STA							0x2021  //足温垫是否运行状态 写给LCD
//#define HP_ISRUN_STA							0x2017  //升温毯是否运行状态 写给LCD
#define BLOOD1_ISRUN_STA						0x1137  //输液1是否运行状态 写给LCD
#define BLOOD2_ISRUN_STA						0x1138  //输液2是否运行状态 写给LCD
#define InfusePress1_ISRUN_STA					0x1139
#define InfusePress2_ISRUN_STA					0x113A
#define ArmBlanket1_ISRUN_STA					0x1135
#define ArmBlanket2_ISRUN_STA					0x1136
#define UpperBlanket_ISRUN_STA					0x1131
#define LowBlanket_ISRUN_STA					0x1132
#define FT1_ISRUN_STA					0x1133
#define FT2_ISRUN_STA					0x1134

/*----------------------------运行控制命令宏定义------------------------*/

/*----------------------------温度参数设置命令宏定义--------------------*/
//#define EHP_TEMP_SET                    0X1002  //电热垫温度设置
//#define FT_TEMP_SET                     0X1005  //足部温度设置
//#define HP_TEMP_SET                     0X100E  //升温毯温度控制
//#define HP_WIN_SET                      0X1010  //升温毯风速控制
#define LcdCmd_BLOOD1_SetTemp              		0X100E  //输血输液CH1温度设置
#define LcdCmd_BLOOD2_SetTemp              		0X1010  //输血输液CH2温度设置
#define LcdCmd_InfusePressBP1_SetPress                0X1012  //
#define LcdCmd_InfusePressBP2_SetPress                0X1014  //
#define LcdCmd_ArmBlanket1Temp_SetTemp              0X100A  //
#define LcdCmd_ArmBlanket2Temp_SetTemp              0X100C  //
#define LcdCmd_UpperBlanketTemp_SetTemp             0X1002  //
#define LcdCmd_LowBlanketTemp_SetTemp               0X1004  //
#define LcdCmd_FT1Temp_SET_SetTemp                      0X1006  //
#define LcdCmd_FT2Temp_SET_SetTemp                      0X1008  //

#define PARM_SAVE										0x2006  //保存温度设置参数到对应模式
#define CONTRL_MODE_auto								0x2004 //自动的控制 选中和非选中
#define CONTRL_MODE_manual								0x2003 //手动模式的控制 选中和非选中
#define CONTRL_MODE_power								0x2005 //功率模式的控制 选中和非选中
/*----------------------------温度参数设置命令宏定义--------------------*/

/*----------------------------温度显示参数命令宏定义--------------------*/
#define InfusePress1_BP_DIS              0X1011//加压袋显示压力值
#define InfusePress2_BP_DIS              0X1013//加压袋显示压力值
#define ArmBlanket1_TEMP_DIS            0X1009//
#define ArmBlanket2_TEMP_DIS            0X100B//
#define UpperBlanket_TEMP_DIS           0X1001//
#define LowBlanket_TEMP_DIS             0X1003//
#define FT1_TEMP_DIS                    0X1005//
#define FT2_TEMP_DIS                    0X1007//
//#define EHP_TEMP_DIS                    0X1001  //电热垫温度
//#define FT_TEMP_DIS                     0X1004  //足部温度
//#define HP_TEMP_DIS                     0X100D  //升温毯温度
#define BLOOD1_TEMP_DIS              		0X100D  //输血输液CH1温度
#define BLOOD2_TEMP_DIS              		0X100F  //输血输液CH2温度

#define InfusePress1_BP_ISHAVE_DIS             0X1049//数据是否显示图片---
#define InfusePress2_BP_ISHAVE_DIS             0X104A//
#define ArmBlanket1_TEMP_ISHAVE_DIS            0X1045//
#define ArmBlanket2_TEMP_ISHAVE_DIS            0X1046//
#define UpperBlanket_TEMP_ISHAVE_DIS           0X1041//
#define LowBlanket_TEMP_ISHAVE_DIS             0X1042//
#define FT1_TEMP_ISHAVE_DIS                    0X1043//
#define FT2_TEMP_ISHAVE_DIS                    0X1044//
#define BLOOD1_TEMP_ISHAVE_DIS                 0X1047
#define BLOOD2_TEMP_ISHAVE_DIS                 0X1048
#define EAR_TEMP_ISHAVE_DIS                 0X104B

#define EAR_TEMP_DIS										0x1015  //耳温显示温度
#define AXI_TEMP_DIS										0x1016  //腋温显示温度

#define EAR_ISHAVE_DATA									0x2015  //耳温有无数据命令地址
#define AXI_ISHAVE_DATA									0x2016  //腋温有无数据命令地址
/*----------------------------温度显示参数命令宏定义--------------------*/

/*---------------------------关于报警的开关命令宏定义---------------------------*/
//#define ALARM_HP_CON								0x2007  //升温毯报警开关
////#define ALARM_WIN_CON								0x2015  //升温毯风机报警开关 同2007并用
//#define ALARM_BLOOD1_CON						0x2008  //输液1报警开关
//#define ALARM_BLOOD2_CON						0x2009  //输液2报警开关
//#define ALARM_EHP_CON								0x200B  //电热垫报警开关
//#define ALARM_FT_CON								0x200A  //足温垫报警开关

//#define ALARM_EAR_CON								0x200D  //耳温报警开关
//#define ALARM_AXI_CON								0x200C  //腋温报警开关

#define Alarm_Switch_Con_UpperBlanket               0x1121
#define Alarm_Switch_Con_LowBlanket                 0x1122
#define Alarm_Switch_Con_FT                         0x1123
#define Alarm_Switch_Con_ArmBlanket                 0x1124
#define Alarm_Switch_Con_Blood1                     0x1127
#define Alarm_Switch_Con_Blood2                     0x1128
#define Alarm_Switch_Con_Infusepress1               0x1129
#define Alarm_Switch_Con_Infusepress2               0x112A

#define Alarm_Switch_Con_EarTemp                    0x112B

#define ALARM_VOICE_SET							    0x1019//0x2012  //报警音量设置
#define ALARM_SILENCE_DIS								0x101D//是否静音图标  0x2002  //报警静音打开关闭控制


#define KEY_V_SET									0x2001  //按键音打开关闭控制
#define ALARM_SUSPEND								0x1018//0x1999  //报警暂停按键
#define ALARM_SUSPEND_DIS								0x101E //报警暂停图标
/*--------------------------关于报警的开关命令宏定义---------------------------*/

/*-------------------------关于报警的阈值命令宏定义---------------------------*/
#define EAR_TEMP_SETH               0x112C//0x2010  //耳温上限
#define EAR_TEMP_SETL               0x112D//0x2011  //耳温下限
//#define AXI_TEMP_SETH               0x200E  //腋温上限
//#define AXI_TEMP_SETL               0x200F  //腋温下限
/*-------------------------关于报警的阈值命令宏定义---------------------------*/

/*-------------------------关于报警的分类宏定义---------------------------*/
#define ALARM_PHY_ADDR               0x2016  //生理参数报警
#define ALARM_EQU_ADDR               0x2015  //设备类报警
/*-------------------------关于报警的分类宏定义---------------------------*/

/*耳温蓝牙连接状态显示*/
#define LcdCmd_BLE_ISCONNECT_DIS						   0x1017//0x2000 //蓝牙连接图标显示
#define LcdCmd_BLE_DISCONNECT						       0x101B//按键断开蓝牙连接

/*关于系统时间的显示*/
#define SYS_RUN_TIME_ADDR							0x2025
#define SYS_TIME_ADDR									0x2022

/*-------------------------关于温度校准宏定义---------------------------*/
#define TEMP_CALIB_EHP_H						0x2035
#define TEMP_CALIB_EHP_L						0x2034
#define TEMP_CALIB_FT_H						0x2030
#define TEMP_CALIB_FT_L						0x2031
#define TEMP_CALIB_HTBK_H						0x2033
#define TEMP_CALIB_HTBK_L						0x2032
#define TEMP_CALIB_BLOOD_H						0x2036
#define TEMP_CALIB_BLOOD_L						0x2037
#define TEMP_CALIB_SAVE							0x2038
/*-------------------------关于温度校准宏定义---------------------------*/

/****************************与LCD通信的命令地址 宏定义*****************************/

/****************************与LCD通信的命令数据内容 宏定义*****************************/
#define MODE_ON											0x0001 //模式选中
#define MODE_OFF                    0x0000 //模式非选中

#define DEVICE_BEGIN                1//0X0001  //开始
//#define DEVICE_STEP                 0X0002  //暂停
#define DEVICE_STOP                 0//0X0003  //停止

#define ALARM_ON										1 //报警打开
#define ALARM_OFF										0 //报警关闭

#define VOICE_ON										0 //按键音/报警音/报警不暂停打开
#define VOICE_OFF										1 //关闭

#define TEMP_NODATA									0 //耳温 腋温无数据
#define TEMP_YESDATA								0x20 //耳温 腋温有数据

#define AUTO_MODE										1 //自动模式加热
#define MANUAL_MODE									0 //手动模式加热

/// @brief: 报警内容
typedef enum        //生理报警
{
    NONE_PHY_ALARM = 0,//0x1F, // 0x20,//15 ,//无生理报警
    EAR_TEMP_L , //耳温过低
    EAR_TEMP_H , //耳温过高
	AXI_TEMP_L , //腋温过低
	AXI_TEMP_H , //腋温过高

//	EQU_INTERRUPT = 0x1E , //设备运行中断报警 20220422

//    NONE_PHY_ALARM = 4,//0x1F, // 0x20,//15 ,//无生理报警
} ALARM_PHY_INFO_en;

typedef enum      //设备报警
{
//	HTBK_TEMP_L = 0 , //升温毯温度偏低
//	HTBK_TEMP_H , //升温毯温度偏高
    
	NONE_EQU_ALARM =0,//69,//0x1F , //0x21,//,//无技术报警
    EQU_INTERRUPT ,//= 68,//0x1E , //设备运行中断报警 20220422
    
    //上身毯
    UpperBlanket_OFF , //设备脱落   16
    //下身毯
    LowBlanket_OFF , //设备脱落   23
    //足温1
    FT1_OFF , //设备脱落   44
    //足温2
    FT2_OFF , //设备脱落   51
    //臂毯1
    ArmBlanket1_OFF , //设备脱落   30
    //臂毯2
    ArmBlanket2_OFF , //设备脱落   37
    BLOOD1_OFF ,//= 0, //设备脱落
    BLOOD2_OFF , //设备脱落   8
    
    UpperBlanket_SHOROV ,//短路或过载
    LowBlanket_SHOROV ,//短路或过载
    FT1_SHOROV ,//短路或过载
    FT2_SHOROV ,//短路或过载
    ArmBlanket1_SHOROV ,//短路或过载
    ArmBlanket2_SHOROV ,//短路或过载
    BLOOD1_SHOROV ,//短路或过载
    BLOOD2_SHOROV ,//短路或过载
    
    UpperBlanket_BREAK ,//热断器报警
    LowBlanket_BREAK ,//热断器报警
    FT1_BREAK ,//热断器报警
    FT2_BREAK ,//热断器报警
    ArmBlanket1_BREAK ,//热断器报警
    ArmBlanket2_BREAK ,//热断器报警
    BLOOD1_BREAK ,
    BLOOD2_BREAK ,
    
    UpperBlanket_SENSOR_FAULT , //传感器故障
    LowBlanket_SENSOR_FAULT , //传感器故障
    FT1_SENSOR_FAULT , //传感器故障
    FT2_SENSOR_FAULT , //传感器故障
    ArmBlanket1_SENSOR_FAULT , //传感器故障
    ArmBlanket2_SENSOR_FAULT , //传感器故障
    BLOOD1_SENSOR_FAULT , //输液管1传感器故障
    BLOOD2_SENSOR_FAULT , //输液管2传感器故障
    
    UpperBlanket_FAULT , //设备故障
    LowBlanket_FAULT , //设备故障
    FT1_FAULT , //设备故障
    FT2_FAULT , //设备故障
    ArmBlanket1_FAULT , //设备故障
    ArmBlanket2_FAULT , //设备故障
    BLOOD1_FAULT , //输液管1故障
    BLOOD2_FAULT , //输液管2故障
    
    UpperBlanket_TEMP_L , //温度偏低
    LowBlanket_TEMP_L , //温度偏低
    FT1_TEMP_L , //温度偏低
    FT2_TEMP_L , //温度偏低
    ArmBlanket1_TEMP_L , //温度偏低
    ArmBlanket2_TEMP_L , //温度偏低
    BLOOD1_TEMP_L ,//输液管1温度偏低
    BLOOD2_TEMP_L , //输液管2温度偏低
    
    UpperBlanket_TEMP_H , //温度偏高
    LowBlanket_TEMP_H , //温度偏高
    FT1_TEMP_H , //温度偏高
    FT2_TEMP_H , //温度偏高
    ArmBlanket1_TEMP_H , //温度偏高
    ArmBlanket2_TEMP_H , //温度偏高
    BLOOD1_TEMP_H , //输液管1温度偏高
    BLOOD2_TEMP_H , //输液管2温度偏高
//    BLOOD1_TEMP_UH ,
//    BLOOD2_TEMP_UH ,

    //加压袋1
    InfusePress1_OFF , //设备脱落   58
    //加压袋2
    InfusePress2_OFF , //设备脱落   63
    InfusePress1_SENSOR_FAULT , //传感器故障
    InfusePress2_SENSOR_FAULT , //传感器故障
    InfusePress1_FAULT , //设备故障
    InfusePress2_FAULT , //设备故障
    InfusePress1_BP_L , //压力偏低
    InfusePress2_BP_L , //压力偏低
    InfusePress1_BP_H , //压力偏高
    InfusePress2_BP_H , //压力偏高
    

//    EHP_OFF , //设备脱落   16
//    EHP_SHOROV ,//短路或过载
//    EHP_BREAK , //加热垫热断器断开
//    EHP_SENSOR_FAULT , //电热垫传感器故障
//    EHP_FAULT , //电热垫故障
//    EHP_TEMP_L , //电热垫温度偏低
//    EHP_TEMP_H , //电热垫温度偏高
//    EHP_TEMP_UH , //加热垫温度过高

//    FT_OFF , //设备脱落  24
//    FT_SHOROV ,//短路或过载
//    FT_BREAK ,
//    FT_SENSOR_FAULT , //足温垫传感器故障
//    FT_FAULT , //足温垫故障
//    FT_TEMP_L , //18    足温垫温度偏低
//    FT_TEMP_H , //足温垫温度偏高 30

//	HTBK_SENSOR_FAULT , //升温毯传感器故障
//	HTBK_FAULT , //升温毯故障
//	HTBK_BREAK ,
//	HTBK_TEMP_UH ,

//	NETPOWER_FAULT , //网电源故障
//    EQU_INTERRUPT = 68,//0x1E , //设备运行中断报警 20220422
//	NONE_EQU_ALARM =69,//0x1F , //0x21,//,//无技术报警
} ALARM_EQU_INFO_en;

/* 根据上面的ALARM_EQU_INFO_en计算错误代码显示的偏移量 保证显示代码都是E01开始  20220905 改为E03开始 不与人体温度重复*/
#define BLOOD1_ERRnum_offset       3//1//输液1的错误代码显示正偏移量
#define BLOOD2_ERRnum_offset       5//7//输液2的错误代码显示负偏移量
#define EHP_ERRnum_offset       	 13//15//电热垫的错误代码显示负偏移量
#define FT_ERRnum_offset       	   21//23//足温垫的错误代码显示负偏移量
#define RUNINTER_ERRnum_offset     10//8//运行中断报警 加热设备均显示E08 20220819

/****************************与LCD通信的命令数据内容 宏定义*****************************/

/****************************与升温毯通信相关 宏定义*****************************/
#define HTBK_TEMP_CHECK_CMD								0x01//查询升温毯的温度
#define HTBK_MOTOR_CON_CMD								0x02//设置电机打开关闭
#define HTBK_MOTOR_PARM_CMD								0x03//查询电机占空比参数
#define HTBK_HEAT_CON_CMD									0x04//设置升温毯是否加热
#define HTBK_HEAT_PARM_CMD								0x05//查询加热占空比参数
#define HTBK_MOTOR_SPEED_CMD							0x06//查询电机转速
#define HTBK_MODE_CMD											0x07//设置升温毯工作模式 自动还是手动
#define HTBK_HEAT_TEMP_CMD								0x08//设置升温毯加热温度
#define HTBK_READ_FAULT_CMD								0x09//读取升温毯的故障状态

#define HTBK_MODE_AUTO										0x01//升温毯为自动模式
#define HTBK_MODE_MANUAL									0x00//升温毯为手动模式 默认模式
#define HTBK_CON_ON												0x01//升温毯的电机、电热丝打开
#define HTBK_CON_OFF											0x00//升温毯的电机、电热丝关闭

#define HTBK_MOTOR_GEAR_1									1//1档 电机转动的占空比为30%
#define HTBK_MOTOR_GEAR_2									2//2档 电机转动的占空比为50%
#define HTBK_MOTOR_GEAR_3									3//3档 电机转动的占空比为80%
#define HTBK_MOTOR_DUTY_1									30//1档 电机转动的占空比为30%
#define HTBK_MOTOR_DUTY_2									50//2档 电机转动的占空比为50%
#define HTBK_MOTOR_DUTY_3									80//3档 电机转动的占空比为80%

#define HTBK_HEAT_DUTY										80//电热丝占空比固定80%
/****************************与升温毯通信相关 宏定义*****************************/

#define EHP_TEMP_OFFSET										55//电热垫温度补偿5.5度
#define HTBK_TMEP_OFFSET									40//升温毯温度补偿4度
#define EHP_TEMP_PID_OFFSET               5.5//电热垫进入PID算法的温度补偿是实际温度


/// @brief:语音控制命令
typedef enum __INTER_VOICE_CMD_en
{
    V_CONTRL_MODE_ONE = 0x01,
    V_CONTRL_MODE_TWO,
    V_CONTRL_MODE_THREE,
    V_CONTRL_MODE_FOUR,  //后面根据语音命令删除？
    V_DEVICE_STOP,  		 //0x05 停止运行
    V_DEVICE_STEP,  		 //0x06 暂停运行
    V_ALARM_CLOSE,  		 //0x07 关闭报警
    V_ALARM_OPEN,   		 //0x08 打开报警
    V_HTBK_BEGIN,  		 	 //0x09 开启升温毯
    V_HTBK_STOP,   			 //0x0a 关闭升温毯
    V_EHP_BEGIN,				 //0x0b 开启电热垫
    V_EHP_STOP,    			 //0x0c 关闭电热垫
    V_FT_BEGIN,    			 //0x0d 开启足温垫
    V_FT_STOP,     			 //0x0e 关闭足温垫
    V_BLOOD_CH1_BEGIN,   //0x0f 开启输液1
    V_BLOOD_CH2_BEGIN,	 //0x10 开启输液2
    V_BLOOD_BEGIN,       //0x11 开启输液
    V_BLOOD_CH1_STOP,    //0x12 关闭输液1
    V_BLOOD_CH2_STOP,    //0x13 关闭输液2
    V_BLOOD_STOP,        //0x14 关闭输液
    V_AUTO_MODE ,        //0x15 开启自动模式
    V_MANUAL_MODE ,      //0x16 开启手动模式
    V_CONTRL_BEGIN ,     //0x17 开始加热
    V_ALARM_SILENCE ,    //0x18 报警静音
    V_DEFAULT_TEMP ,     //0x19 默认体温
    V_TARGET_TEMP ,      //0x1A 目标体温
} INTER_VOICE_CMD_en;


#pragma pack(1)/*指定按1字节对齐*/
//地址注册表数据结构
typedef struct
{
    uint8_t *DataAddress;//数据地址
    uint16_t DataLength;//数据长度
    uint8_t DataEndian;//数据字节序
} AdddrRegedit_T;


//设备实时时间数据结构
typedef struct
{
    uint8_t YearHi;   //年高8位
    uint8_t YearLo;   //年低8位
    uint8_t Month;    //月
    uint8_t Day;      //日
    uint8_t Hour;     //时
    uint8_t Min;      //分
    uint8_t Sec;      //秒
} ScheduleRTC_T;

//系统运行时间 先由定时器来算 后面用RTC代替 ？
typedef struct
{
    uint8_t Hour;     //时
    uint8_t Min;      //分
    uint8_t Sec;      //秒
} SYS_RUN_TIMER_T;

//压力、温度设定结构体
typedef struct
{
    uint16_t InfusePress1;//输液加压袋压力设定
    uint16_t InfusePress2;//输液加压袋压力设定
    uint16_t ArmBlanket1;//加热臂毯1左的温度设定
    uint16_t ArmBlanket2;//加热臂毯2右的温度设定
    uint16_t UpperBlanket;//加热上身毯的温度设定
    uint16_t LowBlanket;//加热下身毯的温度设定
    uint16_t FT1;//足温1左的温度设定
    uint16_t FT2;//足温2右的温度设定
//    uint16_t ehp_temp_set;      //电热垫设定温度
//    uint16_t ft_temp_set;       //足温设定温度
    uint16_t blood1;//输血输液CH1设定温度
    uint16_t blood2;//输血输液CH2设定温度
}Bp_Temp_Set_t;

//当前压力、温度值
typedef struct
{
    uint16_t InfusePress1;//输液加压袋当前压力值
    uint16_t InfusePress2;//输液加压袋当前压力值
    uint16_t ArmBlanket1;//加热臂毯1左的当前温度
    uint16_t ArmBlanket2;//加热臂毯2右的当前温度
    uint16_t UpperBlanket;//加热上身毯的当前温度
    uint16_t LowBlanket;//加热下身毯的当前温度
    uint16_t FT1;//足温1左的当前温度
    uint16_t FT2;//足温2右的当前温度
//    uint16_t ehp_temp_now;         //电热垫当前温度  经过补偿的温度  将测得温度-EHP_TEMP_OFFSET
//    uint16_t ft_temp_now;          //足温当前温度
    uint16_t blood_ch1;   //输血输液CH1当前温度
    uint16_t blood_ch2;   //输血输液CH2当前温度
    uint16_t ear;             //耳温
//  uint16_t axi_temp_now;             //腋温
}Bp_Temp_NowValue_t;

//设备运行使能状态
typedef struct
{
    uint16_t InfusePress1;   	//输液加压袋控制使能
    uint16_t InfusePress2;   	//输液加压袋控制使能
    uint16_t ArmBlanket1;   	//加热臂毯1左控制使能
    uint16_t ArmBlanket2;   	//加热臂毯2右控制使能
    uint16_t UpperBlanket;   	//加热上身毯控制使能
    uint16_t LowBlanket;   	//加热下身毯控制使能
    uint16_t FT1;   	//足温1左控制使能
    uint16_t FT2;   	//足温2右控制使能
//    uint16_t EHP_RUN_CONTRL;			//加热垫运行控制使能
//    uint16_t FT_RUN_CONTRL; 			//足温垫运行控制使能
    uint16_t BLOODCH1;   	//加热管1控制使能
    uint16_t BLOODCH2;   	//加热管2控制使能
}Bp_Temp_EnableSta_t;

//设备运行实际状态
typedef struct
{
//    uint16_t ehp_run_sta; //加热垫实际的运行状态 begin 待机开始运行状态 stop 故障或其他原因停止运行状态
//    uint16_t ft_run_sta; //足温垫实际的运行状态
//    uint16_t blood1_run_sta; //输液1实际的运行状态
//    uint16_t blood2_run_sta; //输液2实际的运行状态
    uint8_t InfusePress1;
    uint8_t InfusePress2;
    uint8_t ArmBlanket1;
    uint8_t ArmBlanket2;
    uint8_t UpperBlanket;
    uint8_t LowBlanket;
    uint8_t ft1;
    uint8_t ft2;
    uint8_t Blood1;
    uint8_t Blood2;
}Bp_Temp_RunSta_t;

//设备存活状态
typedef struct
{
    uint8_t InfusePress1;//输液加压袋压力存活状态
    uint8_t InfusePress2;//输液加压袋压力存活状态
    uint8_t ArmBlanket1;//加热臂毯1左的存活状态
    uint8_t ArmBlanket2;//加热臂毯2右的存活状态
    uint8_t UpperBlanket;//加热上身毯的存活状态
    uint8_t LowBlanket;//加热下身毯的存活状态
    uint8_t FT1;//足温1左的存活状态
    uint8_t FT2;//足温2右的存活状态
    uint8_t blood1;//加热管通道一存活状态
    uint8_t blood2;//加热管通道二存活状态
}Bp_Temp_Islive_t;

//设备状态数据结构
typedef struct
{
    Bp_Temp_Set_t   Bp_Temp_Set;//压力、温度设定结构体  

    Bp_Temp_NowValue_t  Bp_Temp_NowValue;//压力、温度当前值

//	uint16_t ehp_run_time;        //电热垫运行时间
//	uint16_t ft_run_time;         //足温运行时间
//	uint16_t hp_run_time;         //升温毯运行时间
//	uint16_t blood_ch1_run_time;  //输血输液CH1运行时间
//	uint16_t blood_ch2_run_time;  //输血输液CH2运行时间

//	uint16_t sys_run_time;					//系统运行时间

    uint16_t ear_isconnect; //耳温连接状态
//	uint16_t axi_isconnect; //腋温连接状态

    uint16_t default_eartemp;//自动模式下 默认加热对比的人体温度值
    uint16_t targert_eartemp;//自动模式下 设置的目标体温
} DeviceDATA_T;

//设备配置数据结构
typedef struct
{
    Bp_Temp_Set_t   Bp_Temp_Set;//压力、温度设定结构体

    uint16_t MODE;                      //控制模式
    uint16_t SYS_CONTRL;			    //系统运行控制 控制开始停止
    
    Bp_Temp_EnableSta_t     Bp_Temp_EnableSta;//设备使能状态
    Bp_Temp_RunSta_t    Bp_Temp_RunSta;//设备运行实际状态

    uint16_t work_mode; //系统工作模式
    
    Bp_Temp_Islive_t    Bp_Temp_Islive;//设备的存活状态
} DeviceConfig_T;

//设备控制数据结构
typedef struct
{
    ScheduleRTC_T DeviceRTC;        	//设备实时时间
} DeviceControl_T;

//typedef struct
//{
////    uint16_t Device_EHP_CONFIG;			//加热垫温度设定
////    uint16_t Device_FT_CONFIG;			//足温垫温度设定
////    uint16_t Device_HP_TEMP_CONFIG;		//升温毯温度设定
////    uint16_t Device_HT_WIN_CONFIG;		//升温毯电机转速设定
////    uint16_t Device_BLOOD1_TEMP_CONFIG;   //加热管通道一温度设定
////    uint16_t Device_BLOOD2_TEMP_CONFIG;   //加热管通道二温度设定
//    uint16_t InfusePress1_bpSet;//输液加压袋压力设定
//    uint16_t InfusePress2_bpSet;//输液加压袋压力设定
//    uint16_t ArmBlanket1_tempSet;//加热臂毯1左的温度设定
//    uint16_t ArmBlanket2_tempSet;//加热臂毯2右的温度设定
//    uint16_t UpperBlanket_tempSet;//加热上身毯的温度设定
//    uint16_t LowBlanket_tempSet;//加热下身毯的温度设定
//    uint16_t FT1_tempSet;//足温1左的温度设定
//    uint16_t FT2_tempSet;//足温2右的温度设定
////    uint16_t ehp_tempSet;//Device_EHP_CONFIG;			//加热垫温度设定
////    uint16_t ft_tempSet;//Device_FT_CONFIG;			//足温垫温度设定
//    uint16_t blood1_tempSet;//Device_BLOOD1_TEMP_CONFIG; //加热管通道一温度设定
//    uint16_t blood2_tempSet;//Device_BLOOD2_TEMP_CONFIG; //加热管通道二温度设定
//} DeviceMode_Config_T;

typedef struct
{
//    int16_t blood1;//blood_h;   //加热管通道温度校准
//    int16_t blood2;//blood_l;    
    int16_t InfusePress1;
    int16_t InfusePress2;
    int16_t ArmBlanket1;
    int16_t ArmBlanket2;
    int16_t UpperBlanket;
    int16_t LowBlanket;
    int16_t ft1;
    int16_t ft2;
    int16_t Blood1;
    int16_t Blood2;
} Device_Calib_T;//设备的温度校准

typedef struct
{
    uint16_t sys_run_cnt;
    uint16_t ehp_run_cnt;//电热垫
    uint16_t ft_run_cnt;//足温垫
    uint16_t blood1_run_cnt;//输液1
    uint16_t blood2_run_cnt;//输液2
    uint16_t hp_run_cnt;//升温毯
} Device_Runcnt_T;//设备运行时间计数

typedef struct
{
    uint8_t sys;
    uint8_t ehp;//电热垫
//		uint8_t blood;
    uint16_t blood1;//输液1
    uint16_t blood2;//输液2
//		uint8_t hp;//升温毯
    uint16_t ft;//足温垫
} Device_Run_STA_T;//设备运行状态

typedef struct
{
    uint8_t mode;//模式应答
    uint8_t motor_con;
    uint8_t heat_con;
    uint8_t heat_temp;
} HTBK_ACK_T; //升温毯的通信命令应答参数

#pragma pack()/*取消指定对齐，恢复缺省对齐*/
/****************************************************************************/

extern DeviceDATA_T DeviceDATA;
extern DeviceControl_T DeviceControl;
extern DeviceConfig_T DeviceConfig;



/****************************************************************************/

//void TEMP_PecketProcess(DWGP_Broker_T *BrokerRx,DWGP_Broker_T *BrokerTx);

#endif
/* [] END OF FILE */



